package com.bdqn.reflect;

import com.bdqn.reflect.pojo.Person;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 测试6-调用方法
 *
 * @author LILIBO
 * @since 2024/6/27
 */
public class Test06Method {

    public static void main(String[] args) {
        try {
            Person hongshuai = new Person("红帅"); // 创建一个对象：红帅
            Class clazz = Person.class;

            // 获取silentMethod方法（不带参数的）
            Method method1 = clazz.getDeclaredMethod("silentMethod");
            // 设置权限
            method1.setAccessible(true);
            // 调用方法（使用hongshuai对象调用silentMethod方法）
            method1.invoke(hongshuai);

            // 获取silentMethod方法（带一个String类型参数的）
            Method method2 = clazz.getDeclaredMethod("silentMethod", String.class);
            // 设置权限
            method2.setAccessible(true);
            // 调用方法（使用hongshuai对象调用silentMethod方法）
            String result = (String) method2.invoke(hongshuai, "我有点饿了！");
            System.out.println("调用方法，返回的值：" + result);
        } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
            e.fillInStackTrace();
        }

    }

}
